package com.xbongbong.pro.rabbitmq.feign;

import com.xbongbong.paas.toolbox.wrap.XbbResponse;
import com.xbongbong.pro.message.pojo.dto.DistributorMessageRabbitMqDTO;
import com.xbongbong.pro.message.pojo.dto.MessageRabbitMqDTO;
import com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@FeignClient(name = "pro-web-pc",contextId = "orderCenterFeignClient")
public interface OrderCenterFeignClient {

    //****************************************** 订货单 ******************************************************//

    /**
     * Description: 订货单新建  消息接口
     *
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 17:07
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/order/add", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> ordertAdd(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);

    /**
     * Description: 订货单状态变更  消息接口
     *
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 17:07
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/order/change", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> orderChange(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);

    /**
     * Description: 订货单添加/删除负责人  消息接口
     *
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 17:07
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/order/teamMain", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> orderTeamMain(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);

    /**
     * Description: 订货单添加/删除协同人  消息接口
     *
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 17:07
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/order/teamSynergetic", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> orderTeamSynergetic(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);

    /**
     * 订货单审核
     *
     * @param message 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     */
    @RequestMapping(value = "/pro/v1/message/mq/order/review", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> orderReview(DistributorMessageRabbitMqDTO message);

    /**
     * 订货单关闭
     *
     * @param message 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     */
    @RequestMapping(value = "/pro/v1/message/mq/order/close", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> orderClose(DistributorMessageRabbitMqDTO message);

    /**
     * 订货单发货
     *
     * @param message 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     */
    @RequestMapping(value = "/pro/v1/message/mq/order/ship", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> ordertShip(DistributorMessageRabbitMqDTO message);

    /**
     * 订货单废弃
     *
     * @param message 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     */
    @RequestMapping(value = "/pro/v1/message/mq/order/abandoned", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> orderAbandoned(DistributorMessageRabbitMqDTO message);

    /**
     * 退货单通过审核
     *
     * @param message 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     */
    @RequestMapping(value = "/pro/v1/message/mq/refund/review", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> refundReview(DistributorMessageRabbitMqDTO message);

    /**
     * 退货单不通过审核
     *
     * @param message 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     */
    @RequestMapping(value = "/pro/v1/message/mq/refund/abandoned", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> refundAbandoned(DistributorMessageRabbitMqDTO message);

    /**
     * 退货单关闭
     *
     * @param message 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     */
    @RequestMapping(value = "/pro/v1/message/mq/refund/close", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> refundClose(DistributorMessageRabbitMqDTO message);
}
